package task;

/**
 * Interfaccia per la gestione della coda dei Task
 * 
 * @author carpediem
 * @see IQueueProxy rIQueueProxy Task
 */
public interface IQueue {
	public final static int COMM_UNDEFINED_ERROR	= -1;
	public final static int COMM_OK 				= 0;
	public final static int COMM_UNKNOWN_HOST_ERROR = 1;
	public final static int COMM_UDP_SOCKET_ERROR 	= 2;
	public final static int COMM_UDP_IO_ERROR		= 3;
	
	/**
	 * Interfaccia del metodo utilizzato per l'inserimento in coda di un nuovo task
	 * @param t Un nuovo task da inserire in coda
	 * @see void dequeue(Task t);
	 */
	public int enqueue(Task t);
	
	/**
	 * Interfaccia del metodo utilizzato per l'eliminazione dalla coda di uno specifico task
	 * @param t Il task da rimuovere dalla coda, ove presente.
	 * @see void enqueue(Task t);
	 */
	public Task dequeue();
}
